import { vitePlugin as remix } from "@remix-run/dev";
import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
import tailwindcss from "@tailwindcss/vite";

declare module "@remix-run/node" {
  interface Future {
    v3_singleFetch: true;
  }
}

export default defineConfig({
  plugins: [
    tailwindcss(),
    remix({
      future: {
        v3_fetcherPersist: true,
        v3_relativeSplatPath: true,
        v3_throwAbortReason: true,
        v3_singleFetch: true,
        v3_lazyRouteDiscovery: true,
      },
    }),
    tsconfigPaths(),
  ],
  server: {
    middlewareMode: true,
    allowedHosts: true,
  },
  ssr: {
    target: "node",
    noExternal: [
      "@core/database",
      "tailwindcss",
      "@tiptap/react",
      "react-tweet",
      "posthog-js",
      "posthog-js/react",
    ],
    external: ["@prisma/client"],
  },
});
